package com.yoda.youdianda.controller;

import com.yoda.youdianda.common.R;
import com.yoda.youdianda.dto.RoleDto;
import com.yoda.youdianda.dto.RoleInfoDto;
import com.yoda.youdianda.service.SysRoleService;
import com.yoda.youdianda.vo.PageResult;
import com.yoda.youdianda.vo.RoleInfoVo;
import com.yoda.youdianda.vo.RolePageVo;
import com.yoda.youdianda.vo.RoleVo;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.text.ParseException;
import java.util.List;

/**
 * @author shawn
 * @date 2022年 11月 14日 14:37
 */
@RestController
@RequestMapping("sys_role")
public class SysRoleController {

    @Autowired
    private SysRoleService roleService;

    @PostMapping("add")
    public R insertRole(@RequestBody RoleDto dto) {
        boolean res = roleService.insert(dto);
        return res ? R.success("添加成功!") : R.error("添加失败!");
    }

    @GetMapping("/del")
    public R deleteRole(String id) {
        boolean res = roleService.deleteById(id);
        return res ? R.success("删除成功!") : R.error("删除失败!");
    }

    @PostMapping("/update")
    public R updateRole(@RequestBody RoleInfoDto dto) throws ParseException {
        boolean res = roleService.updateById(dto);
        return res ? R.success("删除成功!") : R.error("删除失败!");
    }

    /**
     * 得到角色信息
     *
     * @param id 管理员id
     * @return {@link R}
     */
    @GetMapping("/rowInfo")
    public R getRoleInfo(String id) {
        RoleInfoVo vo = roleService.getByUserId(id);
        return R.success(vo);
    }

    /**
     * 得到所有未删除角色
     *
     * @return {@link R}
     */
    @GetMapping("/allData")
    public R getAllRole() {
        List<RoleVo> vos = roleService.getAll();
        return R.success(vos);
    }

    /**
     * 分页查询
     *
     * @param page  页面
     * @param limit 限制
     * @param name  名字
     * @return {@link R}
     */
    @GetMapping("/list")
    public R getByPage(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer limit, String name) {
        PageResult<RolePageVo> pageResult = roleService.selectByPage(page, limit, name);
        return R.success(pageResult);
    }
}
